/*
GNU Lesser General Public License

JButtonNoFocus
Copyright (C) 2000 Howard Kistler

This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
*/

package com.hexidec.ekit.component;

import java.awt.event.ActionEvent;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import javax.swing.Action;
import javax.swing.Icon;
import wl.ui.ButtonLabel;

/** Class for providing a JButton that does not obtain focus
  */
public class JButtonNoFocus extends ButtonLabel {

    Action action;
    Icon icon;
    String text;

    public JButtonNoFocus() {
        super();
    }

    public JButtonNoFocus(Action a) {
        action = a;
        action.addPropertyChangeListener(new PropertyChangeListener() {
            public void propertyChange(PropertyChangeEvent evt) {
                if("enabled".equals(evt.getPropertyName())){
                    if(evt.getNewValue()!=null && (evt.getNewValue() instanceof Boolean)){
                        setEnabled((Boolean)evt.getNewValue());
                    }
                }
            }
        });
    }

    public JButtonNoFocus(Icon icon) {
        this.icon = icon;
        this.setIcon(icon);
    }

    public JButtonNoFocus(String text) {
        this.text = text;
        this.setText(text);
    }

    public boolean isFocusable() {
        return false;
    }

    @Override
    protected void fireActionListener() {
        if(!isEnabled()){
            return;
        }
        super.fireActionListener();
        if(action!=null){
            action.actionPerformed(new ActionEvent(this, 0, getActionCommand()));
        }
    }

}
